/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.factory.server.service;

import com.factory.server.json.Stats;
import com.factory.server.dto.UserDTO;
import com.factory.server.dto.UserTasksWrapper;
import com.factory.server.dto.UsersWrapper;
import com.factory.server.json.AlgorithmicProblem;
import com.factory.server.json.Plan;
import com.factory.server.json.SchedulerResult;
import java.io.ByteArrayOutputStream;
import java.util.List;
import org.springframework.transaction.annotation.Transactional;

/**
 *
 * @author milos
 */
public interface FactoryServiceIface {

    @Transactional
    public String fileUpload(String userId, AlgorithmicProblem problem, List<String> linesList, List<String> parameters);

    @Transactional
    public boolean register(UserDTO userDTO);

    @Transactional
    public String authorize(UserDTO userDTO);

    @Transactional
    public void addUserTask(String userId, String problemId, String inputId, List<String> parameters, Integer numberOfNodes);

    @Transactional
    public SchedulerResult getSchedulerResult(String userId);

    public void registerPlan(Plan plan);

    @Transactional
    public ByteArrayOutputStream getResultFile(String inputId);

    @Transactional
    public UserTasksWrapper getUserTasks(String userId);

    @Transactional
    public UsersWrapper getAllUsers();

    @Transactional
    public void updateUser(UserDTO userDTO);

    public String pay(String userId);

    public String paymentConfirmation(String userId);
    
    @Transactional
    public Stats getStats();
}
